package 接口;

/*
1、成员变量其实是常量，格式：
    [public] [staic] [final] 数据类型 常量名称 = 值
    注意：
        常量必须进行赋值，且赋值之后不可变
        常量命名必须大写，单词之间下划线连接

2、接口中最要的就是抽象方法，格式：
 [public] [abstract] 返回值类型 方法类型（参数列表）；
 注意：实现类必须覆盖重写接口所有的抽象方法，除非实现类是抽象类。

 3、接口允许定义默认方法，格式：
    [public] default 返回值类型 方法名称 （参数列表）{
        //方法体
    }
    注意：
        默认方法也可以被覆盖重写

 4、接口允许定义静态方法，格式：
    [public] static 返回值类型 方法名称 （参数列表）{
        //方法体
    }
    注意：
    应该通过接口名称进行调用，不能通过实现类对象调用接口静态方法

5、接口允许定义私有方法，格式：
  普通私有方法：private 返回值类型 方法名称 （参数列表） { 方法体 }
  静态私有方法：private static 返回值类型 方法名称 （参数列表） { 方法体 }
  注意：
    private方法只有接口自己才能调用，不能被其他类调用

*************************************************************
接口的使用：
    1、接口是没有静态代码或者构造方法
    2、一个类的直接父类是唯一的，但是一个类可以同时实现多个接口：
    格式：
    public class InterfaceImpl implements MyInterfaceA,MyInterfaceB {
            //覆盖重写所有抽象方法
            //
    }
    3、如果实现类所实现的多个接口中，存在重复的抽象方法，只需要覆盖重写一次
    4、如果实现类没有覆盖重写所有接口中的所有抽象方法，那么实现类就必须是一个抽象类
    5、如果实现类实现的多个接口中，存在重复的默认方法，则实现类一定要对冲突的默认方法进行覆盖重写
    6、一个类如果直接父类当中的方法，和接口中的默认方法产生了冲突，优先使用父类当中的方法（继承的优先级比接口高）


* */
public interface 接口总结 {
}
